package funcInterface.consumer;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ComparatorTest {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "hao", "world", "welcome", "hello");
        /**
         * 对list进行升序排序
         */
//        Collections.sort(strings);

        /**
         * 按照字符串的长度升序
         */
//        Collections.sort(strings, Comparator.comparingInt(String::length));

        /**
         * 按照字符串的长度降序
         */
//        Collections.sort(strings, Comparator.comparingInt(String::length).reversed());
//        Collections.sort(strings, Comparator.comparingInt(item -> item.length()));
//        Collections.sort(strings, Comparator.comparingInt((String item) -> item.length()).reversed()); // 无法自动推断参数类型

        /**
         * 先按照字符串的长度排序，如果字符串长度相同在按照 不区分大小写方式排序
         */
        Collections.sort(strings, Comparator.comparingInt(String::length).thenComparing(String.CASE_INSENSITIVE_ORDER));
        // 相当于
//        Collections.sort(strings, Comparator.comparingInt(String::length)
//                .thenComparing((item1, item2) -> item1.toLowerCase().compareTo(item2.toLowerCase())));

        System.out.println(strings);
    }
}
